package com.futureCloudMOM.core.base.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.futureCloudMOM.common.utils.core.QueryWrapperUtils;

import javax.servlet.http.HttpServletRequest;

/**
 * 文件名 QueryService
 *
 * @since 2023/5/13 14:41
 */
public interface QueryService<T> {

    /**
     * 根据请求传参创建查询条件
     *
     * @param request 请求对象
     * @return 查询条件
     */
    default QueryWrapper<T> generatorQuery(T t, HttpServletRequest request) {
        QueryWrapper<T> queryWrapper = QueryWrapperUtils.containsSearch(request) ? generatorQuery(request) : generatorQuery(t);
        addSorter(queryWrapper, request);
        return queryWrapper;
    }

    /**
     * 根据实体类创建查询条件
     *
     * @param t 实体类
     * @return 查询条件
     */
    default QueryWrapper<T> generatorQuery(T t) {
        return QueryWrapperUtils.create(t, false);
    }

    /**
     * 根据请求传参创建查询条件
     *
     * @param request 请求对象
     * @return 查询条件
     */
    default QueryWrapper<T> generatorQuery(HttpServletRequest request) {
        return QueryWrapperUtils.create(request);
    }

    /**
     * 根据请求传参增加排序
     *
     * @param queryWrapper 查询条件
     * @param request      请求对象
     */
    default void addSorter(QueryWrapper<T> queryWrapper, HttpServletRequest request) {
        QueryWrapperUtils.addSorter(queryWrapper, request);
    }

}
